package listados;

import java.awt.Color;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

import paneles.MonedaRender;
import accesoADatos.AccesoADatos;

import com.toedter.calendar.JDateChooser;

import datos.Venta;

@SuppressWarnings("serial")
public class ListadoVentas extends ListadoDialog {

	private JLabel lProducto;
	private JComboBox cbProducto;
	private JLabel lFechaInicio;
	private JDateChooser cFechaInicio;
	private JDateChooser cFechaFin;
	private JLabel lFechaFin;
	@SuppressWarnings("unchecked")
	public ListadoVentas(JFrame frame, Vector v) {
		super(frame, v);
		this.setTitle("Listado de Ventas");
		{
			lFechaInicio = new JLabel();
			super.jPanel1.add(lFechaInicio);
			lFechaInicio.setText("Fecha inicio");
			lFechaInicio.setHorizontalAlignment(SwingConstants.CENTER);
			lFechaInicio.setPreferredSize(new java.awt.Dimension(100,21));
			//lFechaInicio.setBorder(BorderFactory.createLineBorder(new Color(255,128,0)));
			lFechaInicio.setSize(100, 21);
			//lFechaInicio.setForeground(new Color(255,128,0));
		}
		{
			cFechaInicio = new JDateChooser();
			cFechaInicio.setDate(new Date());
			//cFechaInicio.setBorder(BorderFactory.createLineBorder(new Color(255,128,0)));
			super.jPanel1.add(cFechaInicio);
			cFechaInicio.setPreferredSize(new java.awt.Dimension(130, 21));
		}
		{
			lFechaFin = new JLabel();
			super.jPanel1.add(lFechaFin);
			lFechaFin.setText("Fecha fin");
			lFechaFin.setHorizontalAlignment(SwingConstants.CENTER);
			lFechaFin.setPreferredSize(new java.awt.Dimension(100,21));
			//lFechaFin.setBorder(BorderFactory.createLineBorder(new Color(255,128,0)));
			lFechaFin.setSize(100, 21);
			//lFechaFin.setForeground(new Color(255,128,0));
		}
		{
			cFechaFin = new JDateChooser();
			cFechaFin.setDate(new Date());
			//cFechaFin.setBorder(BorderFactory.createLineBorder(new Color(255,128,0)));
			super.jPanel1.add(cFechaFin);
			cFechaFin.setPreferredSize(new java.awt.Dimension(130, 21));
		}
		{
			
			lProducto = new JLabel();
			super.jPanel1.add(lProducto);
			lProducto.setText("Producto");
			lProducto.setHorizontalAlignment(SwingConstants.CENTER);
			lProducto.setPreferredSize(new java.awt.Dimension(100,21));
			//lProducto.setBorder(BorderFactory.createLineBorder(new Color(255,128,0)));
			lProducto.setSize(100, 21);
			//lProducto.setForeground(new Color(255,128,0));
		}
		{
			List lp = AccesoADatos.getInstance().getProductos();
			lp.add(0, new String("Todos"));
			ComboBoxModel cbProfesionalModel = 
				new DefaultComboBoxModel(
						lp.toArray());
			cbProducto = new JComboBox();
			super.jPanel1.add(cbProducto);
			//cbProducto.setBorder(BorderFactory.createLineBorder(new Color(255,128,0)));
			cbProducto.setModel(cbProfesionalModel);
			cbProducto.setPreferredSize(new java.awt.Dimension(128, 21));
		}
		{
			this.paneListados1.getJTable1().getColumnModel().getColumn(1).setMinWidth(200);
			this.paneListados1.getJTable1().getColumnModel().getColumn(2).setCellRenderer(new MonedaRender());
		}
			pack();
			this.setLocationRelativeTo(null);
			this.setVisible(true);
	}

	
	@SuppressWarnings("unchecked")
	public Vector cargarVector(Object object) {
		Venta c=(Venta)object;
		Vector v=new Vector();
		v.add(this.FormatearFecha(c.getFecha()));
		v.add(c.getProducto().toString());
		v.add(c.getTotal());
		return v;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List getLista() {
		Date inicio = this.cFechaInicio.getDate();
		Date fin = this.cFechaFin.getDate();
		List l=AccesoADatos.getInstance().getVentas(inicio, fin);
		List result = new ArrayList();
		Criterio c = getCriterio();
		for (int i=0; i<l.size();i++){
			Venta r=(Venta)l.get(i);
			if (c.eval(r.getProducto()))
				result.add(r);
		}
		AccesoADatos.getInstance().getSession().close();
		return result;
	}
	public Criterio getCriterio(){
		String s=(String)this.cbProducto.getSelectedItem().toString();
		Criterio c=new CriterioProductoNombre(s);
		return c;
		
	}

}
